When a user application executing in a user space wants to invoke a process in the kernel space with respect to data maintained at a virtual address in the user space, the operating system will intervene and perform a context switch and copy data from the user virtual addresses to kernel virtual addresses to make available to the kernel process being invoked. In this way, a range of user virtual addresses are mapped to contiguous kernel virtual addresses so that the user data may be provided to the kernel process. For instance, an application in the user space may initially issue an IOCTL call to a driver executing in the kernel space to register the user virtual address range that will be subjected to subsequent driver calls. The operating system intercepts the IOCTL registration request and performs a context switch to copy data from the specified user virtual addresses to kernel virtual addresses in the kernel space. During subsequent driver calls from the application, the driver in the kernel space accesses and processes the data using the assigned kernel virtual addresses.